package com.tpl.core.basedata.service.sys;

import com.tpl.core.common.task.TriggerTaskSupport;
import com.tpl.core.entity.sys.Files;

import java.util.List;



public interface FileService extends TriggerTaskSupport {
	
	
	
	List<Files> getDirList(String userNo, String fileType, Long deptId);

	/**
	 * 通过文件夹id获取资源
	 * @param deptId TODO
	 */
	List<Files> getFileById(Long pid, Long deptId);
	
	/**
	 * 获取文件夹路径
	 * @param pid
	 * @return
	 */
	String getDirPath(Long pid);
	
	/**
	 * 通过md5查询文件
	 * @param md5
	 * @return
	 */
	Files getFilesByMd5(String md5);
	
	/**
	 * 通过md5查询文件
	 * @return
	 */
	Files getFilesById(Long id);

	/**
	 * 保存
	 * @param file
	 */
	void saveFile(Files file);

	/**
	 * 检查在同一文件夹下是否存在同文件名和md5
	 * @param pid
	 * @param sourceName
	 * @param md5
	 */
	Boolean isRepeat(Long pid, String sourceName, String md5);

	/**
	 * 新增文件夹
	 * @param f
	 */
	void saveDir(Files f);

	/**
	 * 修改文件夹名称
	 * @param id
	 * @param pid
	 * @param sourceName
	 */
	void updateName(Long id, Long pid, String sourceName);


	/**
	 * 获取新建文件夹的命名
	 * @param pid
	 * @return
	 */
	String getNewDirName(Long pid);

	/**
	 * 通过id删除文件夹
	 * @param id
	 */
	void delDirById(Long id);
	
	/**
	 * 通过id删除文件
	 * @param ids
	 */
	void updateState(String ids,String state);


	/**
	 * 拷贝文件
	 * @param pid
	 * @param ids
	 * @param type 复制、剪切
	 * @return
	 */
	String updateFiles(Long pid, String ids,String type,String publicFlag);
	/**
	 * 替换文件
	 * ids map格式的json
	 */
	void updateFiles(String ids,String type,String publicFlag);

	/**
	 * 获取回收站的内容
	 * @param pubFlag
	 * @param deptId TODO
	 * @return
	 */
	List<Files> getRecycleBinFileById(Boolean pubFlag, Long deptId);
	
	/**
	 * 新建文件夹
	 * @return
	 */
	Files saveDir(Long pid,boolean pubFlag);
	/**
	 * 新建用户文件夹
	 * @return
	 */
	public Files saveUserDir();
	
}
